﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DADOS.auxiliares;
using DADOS.usuario;

namespace PROAD.atendimento.Forms
{
    public partial class FormSocioEconomico : System.Web.UI.Page
    {
        DADOS.usuario.metContexto metCont = new metContexto();
        DADOS.usuario.metCuidador metCuid = new metCuidador();
        DADOS.auxiliares.ClassParentesco metAuxCuid = new ClassParentesco();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Session["CO_USUARIO"] != null)
                {
                    lblUsurario.Text = "Nome do Paciente: " + Session["NO_NOME"];

                    hdfCodUsuario.Value = Session["CO_USUARIO"].ToString();

                    var objCont = metCont.SelecionarContexto(Convert.ToInt32(hdfCodUsuario.Value));

                    if (objCont != null)
                    {
                        hdfCodContexto.Value = objCont.CO_CONTEXTO.ToString();
                        CarregarForm(objCont);
                        btnEditarDm3.Visible = true;
                        btnEditPross.Visible = true;
                        btnSalvarDm3.Visible = false;
                        btnSalvaPross.Visible = false;
                        CarregarGridCuidador();
                    }
                    else
                    {
                        btnEditarDm3.Visible = false;
                        btnEditPross.Visible = false;
                        btnSalvarDm3.Visible = true;
                        btnSalvaPross.Visible = true;
                        CarregarGridCuidador();
                    }

                }
                else
                {
                    Response.Redirect("/atendimento/Consulta/ConsultaUsuarioParaAtm.aspx");
                }
            }
        }

        private void CarregarForm(DADOS.TB_CONTEXTO objContexto)
        {
            rblEscolaridade.SelectedValue = objContexto.NR_Q_1.ToString();
            rblSalario.SelectedValue = objContexto.NR_Q_2.ToString();
            txtOutros.Text = objContexto.NR_Q_2_OUTROS;
            txtIdade.Text = objContexto.NR_Q_3.ToString();
            ddlSexo.SelectedValue = objContexto.NR_Q_4.ToString();

            if (objContexto.NR_Q_SENT_1 == 1) CkbNR_Q_SENT_1.Checked = true;
            if (objContexto.NR_Q_SENT_2 == 1) CkbNR_Q_SENT_2.Checked = true;
            if (objContexto.NR_Q_SENT_3 == 1) CkbNR_Q_SENT_3.Checked = true;
            if (objContexto.NR_Q_SENT_4 == 1) CkbNR_Q_SENT_4.Checked = true;
            if (objContexto.NR_Q_SENT_5 == 1) CkbNR_Q_SENT_5.Checked = true;
            if (objContexto.NR_Q_SENT_6 == 1) CkbNR_Q_SENT_6.Checked = true;
            if (objContexto.NR_Q_SENT_7 == 1) CkbNR_Q_SENT_7.Checked = true;
            if (objContexto.NR_Q_SENT_8 == 1) CkbNR_Q_SENT_8.Checked = true;
            if (objContexto.NR_Q_SENT_9 == 1) CkbNR_Q_SENT_9.Checked = true;


            ddlSenteSozinho.SelectedValue = objContexto.NR_Q_SOZINHO.ToString();
            ddlCondLimpeza.SelectedValue = objContexto.NR_Q_AMB_1_1.ToString();
            ddlVentilacaoLuminosidade.SelectedValue = objContexto.NR_Q_AMB_1_2.ToString();
            ddlTapetes.SelectedValue = objContexto.NR_Q_AMB_1_3.ToString();
            ddlUmidade.SelectedValue = objContexto.NR_Q_AMB_1_4.ToString();
            ddlPisoEscorregadio.SelectedValue = objContexto.NR_Q_AMB_1_5.ToString();
            ddlDegraus.SelectedValue = objContexto.NR_Q_AMB_1_6.ToString();
            ddlRampas.SelectedValue = objContexto.NR_Q_AMB_1_7.ToString();
            ddlDesnivelamento.SelectedValue = objContexto.NR_Q_AMB_1_8.ToString();
            ddlCadeiraRodas.SelectedValue = objContexto.NR_Q_AMB_2_1.ToString();
            ddlCadeiraHigiene.SelectedValue = objContexto.NR_Q_AMB_2_2.ToString();
            ddlBengala.SelectedValue = objContexto.NR_Q_AMB_2_3.ToString();
            ddlAndador.SelectedValue = objContexto.NR_Q_AMB_2_4.ToString();
            ddlHospitalar.SelectedValue = objContexto.NR_Q_AMB_2_5.ToString();
            ddlMatCurativa.SelectedValue = objContexto.NR_Q_AMB_2_6.ToString();
            ddlColchao.SelectedValue = objContexto.NR_Q_AMB_2_7.ToString();
        }

        protected void rtsDadoPaciente_TabClick(object sender, Telerik.Web.UI.RadTabStripEventArgs e)
        {
            if (e.Tab.TabIndex == 0)
            {
                Response.Redirect("/atendimento/Consulta/ConsultaDadosPaciente.aspx");
            }
            if (e.Tab.TabIndex == 2)
            {
                var metUsuario = new DADOS.usuario.metPaciente();
                if (metUsuario.LiberarGestaoCuidado(Convert.ToInt32(Session["CO_USUARIO"])))
                {
                    Response.Redirect("/atendimento/Forms/FormGestaoCuidados.aspx");
                }
                else
                {
                    txtTituloMsn.Text = "Alerta";
                    txtTextoMsn.Text = "Etapa diagnostica não está completa!";
                    ModalPopupMsn.Show();
                }
            }
        }

        protected void rdsEtapa_TabClick(object sender, Telerik.Web.UI.RadTabStripEventArgs e)
        {
            switch (e.Tab.TabIndex)
            {
                case 3:
                    Response.Redirect("/atendimento/Forms/EtapaPreditivaAnamnese.aspx");
                    break;
                case 4:
                    Response.Redirect("/atendimento/Forms/FormAvd.aspx");
                    break;
                case 5:
                    Response.Redirect("/atendimento/Forms/FormSocioEconomico.aspx");
                    break;
                case 6:
                    Response.Redirect("/atendimento/Forms/FormClassificacaoFinal.aspx");
                    break;
            }


        }

        protected void btnSalvarDm3_Click(object sender, EventArgs e)
        {
            if(ValidarForm())
            {
                var obj = CarregarObjeto();
                obj.DT_INCLUSAO = DateTime.Now;
                var objGravado = metCont.Incluir(obj);
                hdfCodContexto.Value = objGravado.CO_CONTEXTO.ToString();
                btnEditarDm3.Visible = true;
                btnEditPross.Visible = true;
                btnSalvarDm3.Visible = false;
                btnSalvaPross.Visible = false;
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Dados gravados com sucesso!";
                ModalPopupMsn.Show();
            }
            else
            {
                ModalPopupMsn.Show();
            }
        }
        protected void btnSalvaPross_Click(object sender, EventArgs e)
        {
            if (ValidarForm())
            {
                var obj = CarregarObjeto();
                obj.DT_INCLUSAO = DateTime.Now;
                var objGravado = metCont.Incluir(obj);
                hdfCodContexto.Value = objGravado.CO_CONTEXTO.ToString();
                btnEditarDm3.Visible = true;
                btnEditPross.Visible = true;
                btnSalvarDm3.Visible = false;
                btnSalvaPross.Visible = false;
                Response.Redirect("/atendimento/Forms/FormClassificacaoFinal.aspx");
            }
            else
            {
                ModalPopupMsn.Show();
            }
        }

        protected void btnEditarDm3_Click(object sender, EventArgs e)
        {
            if (ValidarForm())
            {
                var obj = CarregarObjeto();
                obj.CO_CONTEXTO = Convert.ToInt32(hdfCodContexto.Value);
                metCont.Alterar(obj);
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Dados alterados com sucesso!";
                ModalPopupMsn.Show();
            }
            else
            {
                ModalPopupMsn.Show();
            }
        }

        protected void btnEditPross_Click(object sender, EventArgs e)
        {
            if (ValidarForm())
            {
                var obj = CarregarObjeto();
                obj.CO_CONTEXTO = Convert.ToInt32(hdfCodContexto.Value);
                metCont.Alterar(obj);
                Response.Redirect("/atendimento/Forms/FormClassificacaoFinal.aspx");
            }
            else
            {
                ModalPopupMsn.Show();
            }
        }

        private DADOS.TB_CONTEXTO CarregarObjeto()
        {
            var objContexto = new DADOS.TB_CONTEXTO();

            objContexto.NR_Q_1 = Convert.ToInt32(rblEscolaridade.SelectedValue);
            objContexto.NR_Q_2 = Convert.ToInt32(rblSalario.SelectedValue);
            objContexto.NR_Q_2_OUTROS = txtOutros.Text;
            objContexto.NR_Q_3 = Convert.ToInt32(txtIdade.Text);
            objContexto.NR_Q_4 = Convert.ToInt32(ddlSexo.SelectedValue);
            objContexto.NR_Q_SENT_1 = CkbNR_Q_SENT_1.Checked ? 1 : 0;
            objContexto.NR_Q_SENT_2 = CkbNR_Q_SENT_2.Checked ? 1 : 0;
            objContexto.NR_Q_SENT_3 = CkbNR_Q_SENT_3.Checked ? 1 : 0;
            objContexto.NR_Q_SENT_4 = CkbNR_Q_SENT_4.Checked ? 1 : 0;
            objContexto.NR_Q_SENT_5 = CkbNR_Q_SENT_5.Checked ? 1 : 0;
            objContexto.NR_Q_SENT_6 = CkbNR_Q_SENT_6.Checked ? 1 : 0;
            objContexto.NR_Q_SENT_7 = CkbNR_Q_SENT_7.Checked ? 1 : 0;
            objContexto.NR_Q_SENT_8 = CkbNR_Q_SENT_8.Checked ? 1 : 0;
            objContexto.NR_Q_SENT_9 = CkbNR_Q_SENT_9.Checked ? 1 : 0;
            objContexto.NR_Q_SOZINHO = Convert.ToInt32(ddlSenteSozinho.SelectedValue);
            objContexto.NR_Q_AMB_1_1 = Convert.ToInt32(ddlCondLimpeza.SelectedValue);
            objContexto.NR_Q_AMB_1_2 = Convert.ToInt32(ddlVentilacaoLuminosidade.SelectedValue);
            objContexto.NR_Q_AMB_1_3 = Convert.ToInt32(ddlTapetes.SelectedValue);
            objContexto.NR_Q_AMB_1_4 = Convert.ToInt32(ddlUmidade.SelectedValue);
            objContexto.NR_Q_AMB_1_5 = Convert.ToInt32(ddlPisoEscorregadio.SelectedValue);
            objContexto.NR_Q_AMB_1_6 = Convert.ToInt32(ddlDegraus.SelectedValue);
            objContexto.NR_Q_AMB_1_7 = Convert.ToInt32(ddlRampas.SelectedValue);
            objContexto.NR_Q_AMB_1_8 = Convert.ToInt32(ddlDesnivelamento.SelectedValue);
            objContexto.NR_Q_AMB_2_1 = Convert.ToInt32(ddlCadeiraRodas.SelectedValue);
            objContexto.NR_Q_AMB_2_2 = Convert.ToInt32(ddlCadeiraHigiene.SelectedValue);
            objContexto.NR_Q_AMB_2_3 = Convert.ToInt32(ddlBengala.SelectedValue);
            objContexto.NR_Q_AMB_2_4 = Convert.ToInt32(ddlAndador.SelectedValue);
            objContexto.NR_Q_AMB_2_5 = Convert.ToInt32(ddlHospitalar.SelectedValue);
            objContexto.NR_Q_AMB_2_6 = Convert.ToInt32(ddlMatCurativa.SelectedValue);
            objContexto.NR_Q_AMB_2_7 = Convert.ToInt32(ddlColchao.SelectedValue);
            objContexto.CO_USUARIO = Convert.ToInt32(hdfCodUsuario.Value);
            objContexto.CO_PROFISSIONAL = Convert.ToInt32(Session["CO_PROFISSIONAL"]);

            return objContexto;
        }

        private Boolean ValidarForm()
        {

            if (rblSalario.SelectedValue == "9")
            {
                if (txtOutros.Text.Length == 0)
                {
                    txtTituloMsn.Text = "ALERTA";
                    txtTextoMsn.Text = "Favor preencher: Outros(*SM)";
                    txtOutros.Focus();
                    return false;
                }else
                {
                    try
                    {
                        int sm = Convert.ToInt32(txtOutros.Text);
                    }
                    catch (Exception)
                    {
                        txtTituloMsn.Text = "ALERTA";
                        txtTextoMsn.Text = "Campo: Outros(*SM) somente números!";
                        txtOutros.Focus();
                        return false;
                        throw;
                    }
                }
            }

            if (txtIdade.Text.Length == 0)
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Favor preencher: Idade";
                txtIdade.Focus();
                return false;
            }
            else
            {
                try
                {
                    int idade = Convert.ToInt32(txtIdade.Text);
                }
                catch (Exception)
                {
                    txtTituloMsn.Text = "ALERTA";
                    txtTextoMsn.Text = "Campo: Idade somente números!";
                    txtOutros.Focus();
                    return false;
                    throw;
                }
            }

            if (ddlSexo.SelectedValue == "0")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Favor preencher: Sexo";
                ddlSexo.Focus();
                return false;
            }

            if (!CkbNR_Q_SENT_1.Checked && !CkbNR_Q_SENT_2.Checked && !CkbNR_Q_SENT_3.Checked && !CkbNR_Q_SENT_4.Checked && !CkbNR_Q_SENT_5.Checked && !CkbNR_Q_SENT_6.Checked && !CkbNR_Q_SENT_7.Checked && !CkbNR_Q_SENT_8.Checked && !CkbNR_Q_SENT_9.Checked)
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Favor preencher: Sentimento do usuário em relação à doença e convívio familiar (Pelo menos uma alternativa)";
                CkbNR_Q_SENT_1.Focus();
                return false;
            }

            if (ddlSenteSozinho.SelectedValue == "0")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Favor preencher:  Você se sente sozinho?";
                ddlSenteSozinho.Focus();
                return false;
            }

            if (ddlCondLimpeza.SelectedValue == "0")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Favor preencher:  Condições gerais de limpeza";
                ddlCondLimpeza.Focus();
                return false;
            }

            if (ddlVentilacaoLuminosidade.SelectedValue == "0")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Favor preencher:  Ventilação/luminosidade do cômodo";
                ddlVentilacaoLuminosidade.Focus();
                return false;
            }

            if (ddlTapetes.SelectedValue == "0")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Favor preencher:  Há tapetes que possibilitem queda";
                ddlTapetes.Focus();
                return false;
            }

            if (ddlUmidade.SelectedValue == "0")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Favor preencher:  Umidade de piso e paredes";
                ddlUmidade.Focus();
                return false;
            }

            if (ddlPisoEscorregadio.SelectedValue == "0")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Favor preencher:  Piso Escorregadio";
                ddlPisoEscorregadio.Focus();
                return false;
            }

            if (ddlDegraus.SelectedValue == "0")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Favor preencher:  Presença de degraus";
                ddlDegraus.Focus();
                return false;
            }

            if (ddlRampas.SelectedValue == "0")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Favor preencher:  Presença de rampas";
                ddlRampas.Focus();
                return false;
            }

            if (ddlDesnivelamento.SelectedValue == "0")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Favor preencher:  Possui desnivelamento";
                ddlDesnivelamento.Focus();
                return false;
            }

            if (ddlCadeiraRodas.SelectedValue == "0")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Favor preencher:  Cadeira de rodas";
                ddlCadeiraRodas.Focus();
                return false;
            }

            if (ddlCadeiraHigiene.SelectedValue == "0")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Favor preencher:  Cadeira de higiene";
                ddlCadeiraHigiene.Focus();
                return false;
            }

            if (ddlBengala.SelectedValue == "0")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Favor preencher:  Bengala";
                ddlBengala.Focus();
                return false;
            }

            if (ddlAndador.SelectedValue == "0")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Favor preencher:  Andador";
                ddlAndador.Focus();
                return false;
            }

            if (ddlHospitalar.SelectedValue == "0")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Favor preencher:  Cama hospitalar";
                ddlHospitalar.Focus();
                return false;
            }

            if (ddlMatCurativa.SelectedValue == "0")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Favor preencher:  Materiais de curativa";
                ddlMatCurativa.Focus();
                return false;
            }

            if (ddlColchao.SelectedValue == "0")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Favor preencher:  Colchão caixa de ovo";
                ddlColchao.Focus();
                return false;
            }

            return true;
        }

        protected void btnGravarCuidador_Click(object sender, EventArgs e)
        {
            if (ValidarFormCuidador())
            {

                var obj = CarregarObjCuidador();
                metCuid.Incluir(obj);
                CarregarGridCuidador();
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Cuidador gravado com sucesso!";
                ModalPopupMsn.Show();
                LimparFormCuidador();
            }
            else
            {
                ModalCuidador.Show();
            }
        }

        protected DADOS.TB_CUIDADOR CarregarObjCuidador()
        {
            var objCuidador = new DADOS.TB_CUIDADOR();

            objCuidador.CO_USUARIO = Convert.ToInt32(hdfCodUsuario.Value);
            objCuidador.CO_PROFISSIONAL = Convert.ToInt32(Session["CO_PROFISSIONAL"].ToString());
            objCuidador.NO_CUIDADOR = txtCuidadorNome.Text;
            objCuidador.NR_IDADE = Convert.ToInt32(txtCuidadorIdade.Text);
            objCuidador.NR_SEXO = Convert.ToInt32(ddlCuidadorSexo.SelectedValue);
            objCuidador.NR_PARENTESCO = Convert.ToInt32(ddlCuidadorParentesco.SelectedValue);
            objCuidador.NR_RESIDE = Convert.ToInt32(ddlCuidadorReside.SelectedValue);

            return objCuidador;
        }

        protected void CarregarGridCuidador()
        {
            var list = metCuid.Lista(Convert.ToInt32(hdfCodUsuario.Value));
            gridCuidador.DataSource = list;
            gridCuidador.DataBind();
        }

        protected void LimparFormCuidador()
        {
            txtCuidadorNome.Text = "";
            txtCuidadorIdade.Text = "";
            ddlCuidadorSexo.SelectedValue = "0";
            ddlCuidadorParentesco.SelectedValue = "0";
            ddlCuidadorReside.SelectedValue = "0";
        }

        protected Boolean ValidarFormCuidador()
        {
            if (txtCuidadorNome.Text.Length == 0)
            {
                lblCuidadorErro.Text = "Favor preencher:  Nome do cuidador";
                txtCuidadorNome.Focus();
                return false;
            }

            if (txtCuidadorIdade.Text.Length == 0)
            {
                lblCuidadorErro.Text = "Favor preencher: Idade do cuidador";
                txtCuidadorIdade.Focus();
                return false;
            }
            else
            {
                try
                {
                    int idade = Convert.ToInt32(txtCuidadorIdade.Text);
                }
                catch (Exception)
                {
                    lblCuidadorErro.Text = "Campo: Idade do cuidador somente números!";
                    txtCuidadorIdade.Focus();
                    return false;
                    throw;
                }
            }

            if (ddlCuidadorSexo.SelectedValue == "0")
            {
                lblCuidadorErro.Text = "Favor preencher:  Sexo do cuidador!";
                ddlCuidadorSexo.Focus();
                return false;
            }

            if (ddlCuidadorParentesco.SelectedValue == "0")
            {
                lblCuidadorErro.Text = "Favor preencher:  Parentesto do cuidador!";
                ddlCuidadorParentesco.Focus();
                return false;
            }

            if (ddlCuidadorReside.SelectedValue == "0")
            {
                lblCuidadorErro.Text = "Favor preencher:  Reside?";
                ddlCuidadorReside.Focus();
                return false;
            }
            return true;
        }

        protected void gridCuidador_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType != DataControlRowType.DataRow) return;

            int intCodSexo = Convert.ToInt32(e.Row.Cells[2].Text);
            int intCodParentesco = Convert.ToInt32(e.Row.Cells[3].Text);
            int intCodReside = Convert.ToInt32(e.Row.Cells[4].Text);
            int intCodCuidador = Convert.ToInt32(e.Row.Cells[5].Text);

            switch (intCodSexo)
            {
                case 1:
                    e.Row.Cells[2].Text = "Masculino";
                    break;
                case 2:
                    e.Row.Cells[2].Text = "Feminino";
                    break;
            }

            var listParentesco = metAuxCuid.ListaParentesco();
            var objParentesco = listParentesco.Where(q => q.CO_PARENTESCO == intCodParentesco).FirstOrDefault();
            e.Row.Cells[3].Text = objParentesco.NO_PARENTESCO;

            switch (intCodReside)
            {
                case 1:
                    e.Row.Cells[4].Text = "Não";
                    break;
                case 2:
                    e.Row.Cells[4].Text = "Sim";
                    break;
            }

            if (metCuid.ExisteEntrevista(intCodCuidador))
            {
                e.Row.Cells[5].Text = "<a href='/atendimento/forms/FormEntrevistaCuidador.aspx?codCuid=" + intCodCuidador + "'>Sim</a>";
            }else
            {
                e.Row.Cells[5].Text = "<a href='/atendimento/forms/FormEntrevistaCuidador.aspx?codCuid=" + intCodCuidador + "'>Não</a>";
            }
        }

        protected void gridCuidador_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            int id = Convert.ToInt32(e.CommandArgument);

            switch (e.CommandName)
            {
                case "Excluir":
                    metCuid.Excluir(id);
                    CarregarGridCuidador();
                    txtTituloMsn.Text = "ALERTA";
                    txtTextoMsn.Text = "Cuidador excluido com sucesso!";
                    ModalPopupMsn.Show();
                    break;
            }
        }
    }
}